﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using BLL;
using Exceptions;

namespace WCF
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "WCFCategoria" in code, svc and config file together.
    public class WCFCategoria : IWCFCategoria
    {
        public List<DTO.Categoria> list()
        {
            BLLCategoria bllCategoria = new BLLCategoria();
            List<BTO.Categoria> btoCategorias = bllCategoria.list();
            List<DTO.Categoria> dtoCategorias = new List<DTO.Categoria>();
            DTO.Categoria dtoCategoria;

            foreach (BTO.Categoria btoCategoria in btoCategorias)
            {
                dtoCategoria = new DTO.Categoria();
                dtoCategoria.IDCategoria = btoCategoria.IDCategoria;
                dtoCategoria.descricao = btoCategoria.descricao;

                dtoCategorias.Add(dtoCategoria);
            }

            return dtoCategorias;
        }

        public DTO.Categoria getByID(int id)
        {
            BLLCategoria bllCategoria = new BLLCategoria();
            DTO.Categoria dtoCategoria;

            try
            {
                BTO.Categoria btoCategoria = bllCategoria.getByID(id);

                dtoCategoria = new DTO.Categoria();
                dtoCategoria.IDCategoria = btoCategoria.IDCategoria;
                dtoCategoria.descricao = btoCategoria.descricao;

            }
            catch (NotFoundCategoriaException e)
            {
                throw new NotFoundCategoriaException(e.Message);
            }
            catch (Exception)
            {
                throw new Exception("Categoria não encontrado!");
            }

            return dtoCategoria;
        }
    }
}
